export default {
    namespaced: true,
    state: {
        token: ''
    },
    getters: {

    },
    mutations: {
        setToken (state, payload) {
            state.token = payload
        }
    },
    actions: {
        // 将支付页面获取token的逻辑移到这里
        // 定义一个函数
        async fetchToken ({ commit }) {
            //1.获取token,需要的数据有encryptedData、rawData、iv、signature、code
            // 需要调用wx的api来获取这些数据传给后台才能获得token
            // console.log(code);
            // 这里需要注意的是，这个getUserProfile的api触发的条件是用户点击，但是我们知道uni-api是封装之后才具备Promise的风格
            // 但本质上还是一层嵌套一层 所以这么写的顺序需要调换一下，也就是用户点击的时候先触发getUserProfile这个api就没问题
            const [err2, result1] = await uni.getUserProfile({
                desc: "增强用户体验",
            });
            // 获取第一个数据code
            const [err1, { code }] = await uni.login();
            // 发起获取token的接口请求，传入相应参数
            // 这里的this不再是指向Vue实例，而是Store的实例，所以要改为uni
            // const result2 = await this.$u.post(`/users/wxlogin`, {
            //     code,
            //     ...result1,
            // });
            const result2 = await uni.$u.post(`/users/wxlogin`, {
                code,
                ...result1,
            });
            // console.log(result2);
            // 获取token
            const { token } = result2.message;
            // 提交mutations修改state中的token
            commit("setToken", token)
        }
    }
}